package com.lightman.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 *  jsr303验证
 *      1 、给bean 添加校验注解 , 并定义自己的message 提示
 *      2 、开启校验功能  @Valid
 *          效果, 校验错误
 *      3 、给校验的bean后紧跟一个BindingResult , 就可以获得校验结果
 *      4 、分组校验
 *
 *      统一的异常处理
 *      @ControllerAdvice
 *
 *      5 、模板引擎
 *          1)   thymeleaf-cache: false 关闭缓存
 *          2) 静态资源都放在static 文件夹下就可以按照路径直接访问
 *          3) 页面放在remplates 下,直接访问
 *              springBoot 访问项目的时候默认,会找index
 *          4) 页面修改, 不重启服务器,实时更新
 *              1 引入devtoos
 *              2 ctrl + shift +F9 重新字段编译, 代码配置还是重启
 *
 *  整合缓存
 *
 *      Cacheable: Triggers cache population.:触发将数据保存到缓存的操作
 *      cacheEvict: Triggers cache eviction.:触发将数据从缓存删除的操作
 *      CCachePut: Updates the cache without interfering with the method execution.:不影响方法执行豆
 *      Caching:Regroups muLtiple cache operations to be appLied on a method.:组合以上多个操作
 *      CacheConfig: Shares some common cache-related settings at class-Level.:在类级别共享缓存的
 *
 *      1、 依赖  spring-boot-starter-cache,spring-boot-starter-data-redis
 *      2、 配置
 *          自动配置那些
 *          手动配置
 *      3、 测试使用
 *
 *      自定义:
 *        1 制定生成的key key 属性, 接受一个 spel表达式
 *        2 制定存活时间  配置文件之中修改ttl
 *        3 数据格式为json
 *          cacheAutoConfiguration
 *          redisCacheConfiguration
 */

@EnableCaching // 开启缓存功能
@EnableFeignClients(basePackages = "com.lightman.gulimall.product.feign")
@MapperScan("com.lightman.gulimall.product.dao")
@SpringBootApplication
@EnableDiscoveryClient
public class ProductApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProductApplication.class, args);
    }
}
